using System.Collections.Generic;
using NFit.Core.Config;
namespace NFit.Core.Interfaces
{
    /// <summary>
    /// Service contract for NFit runner
    /// </summary>
    public interface INFitRunner
    {
        /// <summary>
        /// Runner configuration
        /// </summary>
        NFitConfiguration Config { get; }

        /// <summary>
        /// The module responsible for executing a specification
        /// </summary>
        ISpecificationExecution SpecificationExec { get; set; }        
        
        /// <summary>
        /// Execute all the specifications in the provided datasources and give an execution summary
        /// </summary>
        /// <returns></returns>
        ExecutionSummary Run();
    }
}